/*
 * Copyright (C) 2012 POAS.VSTU
 */

package model;

import java.util.ArrayList;
import java.util.EventObject;

/** Игровое событие. */
public class GameEvent extends EventObject {

    /// Источник, стопка из которой перемещаются карты
    private CardPile mFrom;

    /// Приемник, стопка в которую перемещаются карты
    private CardPile mTo;

    /// Перемещаемые карты
    private CardPile mCards;

    /**
     * Конструктор по-умолчанию.
     * @param source объект-источник события
     */
    public GameEvent (Object source) {
        super(source);
    }

    /**
     * Конструктор события.
     * @param source объект-источник события
     * @param from стопка, из которой перемащаются карты
     * @param to стопка в которую перемещаются карты
     * @param cards перемещаемые карты
     */
    public GameEvent (Object source, CardPile from, CardPile to, ArrayList<Card> cards) {
        this(source);
        mFrom = from;
        mTo = to;
        mCards = new CardPile();
        mCards.push(cards);
    }

    /**
     * Конструктор события (для случая с одной картой).
     * @param source объект-источник события
     * @param from стопка, из которой перемащаются карты
     * @param to стопка в которую перемещаются карты
     * @param card перемещаемая карта
     */
    public GameEvent (Object source, CardPile from, CardPile to, Card card) {
        this(source);
        mFrom = from;
        mTo = to;
        mCards = new CardPile();
        mCards.push(card);
    }

    /// Источник, стопка из которой перемещаются карты
    public CardPile getCardPileFrom() {
        return mFrom;
    }

    /// Приемник, стопка в которую перемещаются карты
    public CardPile getCardPileTo() {
        return mTo;
    }

    /// Перемещаемые карты
    public CardPile getCards() {
        return mCards;
    }
}
